package com.ygqh.baby.service;

import java.util.List;

import com.ygqh.baby.ao.Message;
import com.ygqh.baby.ao.QueryInfo;
import com.ygqh.baby.ao.ResultSet;
import com.ygqh.baby.model.CardCouponReceiver;
import com.ygqh.baby.po.YgCardGiveRecord;

public interface YgCardGiveRecordService {

	List<YgCardGiveRecord> find();

	int findCount();

	YgCardGiveRecord findById(Long id);

	int deleteSoft(Long[] ids);

	int deleteSoft(Long id);

	int save(YgCardGiveRecord ygCardGiveRecord);

	int update(YgCardGiveRecord ygCardGiveRecord);

	int saveOrUpdate(YgCardGiveRecord ygCardGiveRecord);

	ResultSet<YgCardGiveRecord> search(QueryInfo queryInfo, String q);

	int addGiveRecord(Long cardId, Long userId);

	List<YgCardGiveRecord> findByGiver(Long cardId, Long giver);

	int receiveCard(Long cardId, Long sharer, Long receiver);

	/**
	 * 该卡券是否已经被领取
	 * 
	 * @Title: isReceived
	 * @param cardId
	 * @param sharer
	 * @return 入参
	 * @return Boolean 返回类型
	 * @author （guohao）
	 * @throws
	 * @date 2017年11月17日 下午12:19:14
	 * @version V1.0
	 */
	Boolean isReceived(Long cardId, Long sharer);

	/**
	 * 该卡券是否为赠送领取的卡券
	 * 
	 * @Title: isGived
	 * @param cardId
	 *            入参
	 * @return Boolean 返回类型
	 * @author （guohao）
	 * @throws
	 * @date 2017年11月17日 下午12:18:06
	 * @version V1.0
	 */
	Boolean isByGived(Long cardId);

	Message validateGiveRecord(List<Long> cardDetailIdList, Long receiver);

	int addBatchByCardDetailIdList(List<Long> cardDetailIdList, Long giver);

	List<YgCardGiveRecord> findByCardDetailIdList(List<Long> cardDetailIdList);

	/**
	 * 获取领取指定卡券用户集
	 * @param cardDetailIdList
	 * @return
	 */
	List<CardCouponReceiver> findUserListByCardDetailIdList(List<Long> cardDetailIdList);
}
